class opt_feat
{
public:  
    inline opt_feat(const std::string  in_path, 
		    const std::string  in_actionNames, 
		    const uword in_col, 
		    const uword in_row
 		  );
    
    inline void features_per_action_training( field<string>peo_train );
    inline void create_gmm_action( field<string>peo_train, int in_Ncent,  int run );
    
    inline void feature_multi_action( field<string> peo_test );
    inline void gmm_multi_action( field<string> peo_test, int in_Ncent, int L, int run);


    

const std::string path;
const std::string actionNames;


const uword col;
const uword row;
//const field<string>peo_train;
//const field<string> peo_test;
//const int run;
int dim;

int  N_cent;
bool ismultiAction;
rowvec  arma_multi_labels;
field <mat> test_features_arma; // Each mat has all the vector features of that frame
vec lab_feature_vectors;

//std::vector < mat > test_features;
//std::vector < uword > lab_feature_vectors;
//std::vector < mat > diag_covs_all_videos;
vector<vector<vec> > all_actions_matrix; //the feat_vector of action i are stored in row i

field<std::string> actions;
field<std::string> videos;


  private:
    inline void features_per_action();
    inline mat  get_loglikelihoods(mat mat_features, int run);

 
  
};